Images এবং Pictures যোগ করা

Java Technologies - অ্যাপাচি পিওআই (ওয়ার্ড)
170
170

Apache POI এর XWPFDocument ক্লাস ব্যবহার করে আপনি Word ডকুমেন্টে ছবি (Images) এবং পিকচার (Pictures) যোগ করতে পারেন। এটি ব্যবহার করে বিভিন্ন ফরম্যাট যেমন JPEG, PNG, GIF ইত্যাদি ছবির ফাইল যুক্ত করা সম্ভব।

Word ডকুমেন্টে ছবি যোগ করতে XWPFRun এবং XWPFPictureData ক্লাস ব্যবহার করা হয়। নিচে ছবি যোগ করার জন্য কয়েকটি উদাহরণ দেওয়া হলো।


১. ছবি যোগ করা

এখানে একটি ছবি XWPFRun এর মাধ্যমে Word ডকুমেন্টে যোগ করা হচ্ছে। আমরা JPEG, PNG বা অন্য ছবি ফরম্যাট ব্যবহার করতে পারি।

import org.apache.poi.xwpf.usermodel.*;
import org.apache.poi.util.Units;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;

public class AddImageToWord {
    public static void main(String[] args) throws IOException {
        XWPFDocument document = new XWPFDocument();
        
        // একটি প্যারাগ্রাফ তৈরি করা
        XWPFParagraph paragraph = document.createParagraph();
        XWPFRun run = paragraph.createRun();
        
        // ছবির ফাইল পথ
        String imagePath = "image.jpg";
        
        // ছবির ফাইল ইনপুট স্ট্রিম তৈরি করা
        FileInputStream imageStream = new FileInputStream(imagePath);
        
        // ছবির সাইজ (ইউনিট - পিক্সেল হিসেবে 100x100)
        run.addPicture(imageStream, XWPFDocument.PICTURE_TYPE_JPEG, imagePath, Units.toEMU(100), Units.toEMU(100));
        
        // ডকুমেন্ট সেভ করা
        try (FileOutputStream out = new FileOutputStream("document_with_image.docx")) {
            document.write(out);
        }

        System.out.println("Image added to the Word document!");
    }
}

এখানে, addPicture() মেথড ব্যবহার করে JPEG ছবি ডকুমেন্টে যুক্ত করা হয়েছে। Units.toEMU() এর মাধ্যমে ছবির আকার নির্ধারণ করা হয়েছে, যা Microsoft Word এর ইউনিট সিস্টেমে রূপান্তরিত হয়।


২. Multiple Images যোগ করা

একই ডকুমেন্টে একাধিক ছবি যোগ করতে পারেন, এবং প্রতিটি ছবি আলাদা প্যারাগ্রাফে রাখা যেতে পারে।

import org.apache.poi.xwpf.usermodel.*;
import org.apache.poi.util.Units;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;

public class AddMultipleImages {
    public static void main(String[] args) throws IOException {
        XWPFDocument document = new XWPFDocument();
        
        // প্রথম ছবি যোগ করা
        XWPFParagraph paragraph1 = document.createParagraph();
        XWPFRun run1 = paragraph1.createRun();
        String imagePath1 = "image1.jpg";
        FileInputStream imageStream1 = new FileInputStream(imagePath1);
        run1.addPicture(imageStream1, XWPFDocument.PICTURE_TYPE_JPEG, imagePath1, Units.toEMU(150), Units.toEMU(150));
        
        // দ্বিতীয় ছবি যোগ করা
        XWPFParagraph paragraph2 = document.createParagraph();
        XWPFRun run2 = paragraph2.createRun();
        String imagePath2 = "image2.png";
        FileInputStream imageStream2 = new FileInputStream(imagePath2);
        run2.addPicture(imageStream2, XWPFDocument.PICTURE_TYPE_PNG, imagePath2, Units.toEMU(150), Units.toEMU(150));
        
        // ডকুমেন্ট সেভ করা
        try (FileOutputStream out = new FileOutputStream("document_with_multiple_images.docx")) {
            document.write(out);
        }

        System.out.println("Multiple images added to the Word document!");
    }
}

এখানে, দুটি ছবি একে একে ডকুমেন্টে যোগ করা হয়েছে। JPEG এবং PNG ফরম্যাটের ছবি আলাদা প্যারাগ্রাফে যোগ করা হয়েছে।


৩. Image Alignment এবং Styling

ছবির অবস্থান এবং স্টাইল নিয়ন্ত্রণের জন্য XWPFParagraph.Alignment এবং XWPFRun ক্লাস ব্যবহার করা হয়। আপনি ছবির alignment, সাইজ, এবং অন্যান্য স্টাইল কাস্টমাইজ করতে পারেন।

import org.apache.poi.xwpf.usermodel.*;
import org.apache.poi.util.Units;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;

public class ImageStyling {
    public static void main(String[] args) throws IOException {
        XWPFDocument document = new XWPFDocument();
        
        // একটি প্যারাগ্রাফ তৈরি করা
        XWPFParagraph paragraph = document.createParagraph();
        
        // ছবি এডজাস্টমেন্ট
        paragraph.setAlignment(ParagraphAlignment.CENTER);  // ছবি সেন্টারে রাখতে
        
        XWPFRun run = paragraph.createRun();
        String imagePath = "image.jpg";
        FileInputStream imageStream = new FileInputStream(imagePath);
        
        // ছবির সাইজ এবং alignment সেট করা
        run.addPicture(imageStream, XWPFDocument.PICTURE_TYPE_JPEG, imagePath, Units.toEMU(200), Units.toEMU(200));
        
        // ডকুমেন্ট সেভ করা
        try (FileOutputStream out = new FileOutputStream("document_with_styled_image.docx")) {
            document.write(out);
        }

        System.out.println("Styled image added to the Word document!");
    }
}

এখানে, setAlignment(ParagraphAlignment.CENTER) ব্যবহার করে ছবিকে পৃষ্ঠার কেন্দ্রস্থলে বসানো হয়েছে, এবং ছবির সাইজও কাস্টমাইজ করা হয়েছে।


৪. Text এবং Image একসাথে যোগ করা

ছবি এবং টেক্সট একত্রে একই প্যারাগ্রাফে যোগ করা যায়, যাতে ছবির পাশেও কিছু টেক্সট থাকে। এখানে XWPFRun এর সাহায্যে টেক্সট এবং ছবির সন্নিবেশ ঘটানো হয়েছে।

import org.apache.poi.xwpf.usermodel.*;
import org.apache.poi.util.Units;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;

public class ImageAndTextTogether {
    public static void main(String[] args) throws IOException {
        XWPFDocument document = new XWPFDocument();
        
        // একটি প্যারাগ্রাফ তৈরি করা
        XWPFParagraph paragraph = document.createParagraph();
        XWPFRun run = paragraph.createRun();
        
        // টেক্সট যোগ করা
        run.setText("This is some text before the image.");
        
        // ছবি যোগ করা
        String imagePath = "image.jpg";
        FileInputStream imageStream = new FileInputStream(imagePath);
        run.addPicture(imageStream, XWPFDocument.PICTURE_TYPE_JPEG, imagePath, Units.toEMU(150), Units.toEMU(150));
        
        // আরও টেক্সট যোগ করা
        run.addBreak(); // নতুন লাইন
        run.setText("This is some text after the image.");
        
        // ডকুমেন্ট সেভ করা
        try (FileOutputStream out = new FileOutputStream("document_with_image_and_text.docx")) {
            document.write(out);
        }

        System.out.println("Image and text added together to the Word document!");
    }
}

এখানে, একটি প্যারাগ্রাফে প্রথমে টেক্সট যোগ করা হয়েছে, তারপর ছবির সন্নিবেশ ঘটানো হয়েছে, এবং শেষে আবার টেক্সট যোগ করা হয়েছে।


৫. Header এবং Footer তে Image যোগ করা

আপনি ডকুমেন্টের হেডার বা ফুটারেও ছবি যোগ করতে পারেন। এটি সাধারণত ডকুমেন্টে লোগো বা অন্যান্য গ্রাফিক্স যোগ করার জন্য ব্যবহৃত হয়।

import org.apache.poi.xwpf.usermodel.*;
import org.apache.poi.util.Units;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;

public class ImageInHeaderFooter {
    public static void main(String[] args) throws IOException {
        XWPFDocument document = new XWPFDocument();
        
        // Header-এ ছবি যোগ করা
        XWPFHeaderFooterPolicy policy = document.createHeaderFooterPolicy();
        XWPFParagraph headerParagraph = policy.createHeader(XWPFHeaderFooterPolicy.DEFAULT).createParagraph();
        XWPFRun headerRun = headerParagraph.createRun();
        
        String imagePath = "logo.jpg";
        FileInputStream imageStream = new FileInputStream(imagePath);
        headerRun.addPicture(imageStream, XWPFDocument.PICTURE_TYPE_JPEG, imagePath, Units.toEMU(100), Units.toEMU(100));

        // Footer-এ ছবি যোগ করা
        XWPFParagraph footerParagraph = policy.createFooter(XWPFHeaderFooterPolicy.DEFAULT).createParagraph();
        XWPFRun footerRun = footerParagraph.createRun();
        footerRun.addPicture(imageStream, XWPFDocument.PICTURE_TYPE_JPEG, imagePath, Units.toEMU(100), Units.toEMU(100));

        // ডকুমেন্ট সেভ করা
        try (FileOutputStream out = new FileOutputStream("document_with_image_in_header_footer.docx")) {
            document.write(out);
        }

        System.out.println("Image added in the header and footer of the Word document!");
   

} }


এখানে, একটি ছবি **header** এবং **footer** তে যোগ করা হয়েছে।

---

সারাংশ

**Apache POI** এর মাধ্যমে আপনি **Word (DOCX)** ডকুমেন্টে **ছবি এবং পিকচার** যোগ করতে পারেন। **XWPFRun** ক্লাসের মাধ্যমে ছবি যোগ করা হয়, যেখানে ছবি সাইজ কাস্টমাইজ করা, alignment সেট করা এবং একাধিক ছবি একই ডকুমেন্টে যোগ করা সম্ভব। এছাড়াও, হেডার এবং ফুটারেও ছবি যুক্ত করা যায়, যা ডকুমেন্টের পেশাগত চেহারা বাড়াতে সাহায্য করে।
common.content_added_by

Word ডকুমেন্টে ইমেজ যোগ করা (JPEG, PNG)

102
102

Apache POI ব্যবহার করে আপনি সহজেই Word ডকুমেন্টে ইমেজ যোগ করতে পারেন। এটি সাধারণত XWPFDocument ক্লাসের সাহায্যে করা হয়, যেখানে আপনি XWPFPicture বা XWPFRun ব্যবহার করে ইমেজ ইনসার্ট করতে পারেন। এই পদ্ধতিতে আপনি JPEG, PNG সহ বিভিন্ন ইমেজ ফর্ম্যাট ব্যবহার করতে পারেন।

নিম্নে দেখানো হয়েছে কিভাবে JPEG এবং PNG ফরম্যাটের ইমেজ Word ডকুমেন্টে যুক্ত করা যায়।


1. Word ডকুমেন্টে ইমেজ যোগ করা

ইমেজ যোগ করতে, আপনাকে প্রথমে ইমেজ ফাইলের পাথ নির্ধারণ করতে হবে এবং তারপর XWPFRun ক্লাসের মাধ্যমে সেই ইমেজটি প্যারাগ্রাফে যোগ করতে হবে।

কোড উদাহরণ:

import org.apache.poi.xwpf.usermodel.XWPFDocument;
import org.apache.poi.xwpf.usermodel.XWPFParagraph;
import org.apache.poi.xwpf.usermodel.XWPFRun;
import org.apache.poi.util.Units;

import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;

public class AddImageToWord {
    public static void main(String[] args) throws IOException {
        // নতুন Word ডকুমেন্ট তৈরি
        XWPFDocument document = new XWPFDocument();

        // একটি প্যারাগ্রাফ তৈরি করা
        XWPFParagraph paragraph = document.createParagraph();

        // প্যারাগ্রাফে রান তৈরি করা
        XWPFRun run = paragraph.createRun();

        // ইমেজ যোগ করা (JPEG অথবা PNG)
        String imagePath = "path_to_your_image.jpg"; // ইমেজ ফাইলের পাথ
        try (FileInputStream fis = new FileInputStream(imagePath)) {
            run.addPicture(fis, XWPFDocument.PICTURE_TYPE_JPEG, imagePath, Units.toEMU(100), Units.toEMU(100)); // ইমেজ আকার ১০০x১০০ পিক্সেল
        }

        // Word ডকুমেন্ট সেভ করা
        try (FileOutputStream out = new FileOutputStream("word_with_image.docx")) {
            document.write(out);
        }

        System.out.println("ইমেজ সহ Word ডকুমেন্ট সফলভাবে তৈরি হয়েছে!");
    }
}

কোড ব্যাখ্যা:

  • createParagraph(): এটি একটি নতুন প্যারাগ্রাফ তৈরি করে।
  • createRun(): এটি প্যারাগ্রাফে একটি রান তৈরি করে, যেখানে আমরা টেক্সট বা ইমেজ ইনসার্ট করতে পারি।
  • addPicture(): এই মেথডটি ইমেজ ইনসার্ট করার জন্য ব্যবহৃত হয়। এটি ইমেজের ইনপুট স্ট্রিম, ইমেজ টাইপ (JPEG বা PNG), এবং সাইজ (EMU-তে) চায়।
  • Units.toEMU(100): ইমেজের সাইজ ১০০x১০০ পিক্সেল আকারে সেট করা হয়েছে।

এই কোডটির মাধ্যমে একটি JPEG বা PNG ইমেজ Word ডকুমেন্টে সফলভাবে যোগ করা যাবে।


2. ইমেজের আকার কাস্টমাইজ করা

ইমেজ যোগ করার সময় আপনি তার আকারও কাস্টমাইজ করতে পারেন। addPicture() মেথডে ইমেজের প্রস্থ এবং উচ্চতা পিক্সেলে বা EMU (English Metric Units) এ সেট করা হয়। Units.toEMU() পদ্ধতি ব্যবহার করে আপনি পিক্সেল থেকে EMU তে রূপান্তর করতে পারবেন।

কোড উদাহরণ:

import org.apache.poi.xwpf.usermodel.XWPFDocument;
import org.apache.poi.xwpf.usermodel.XWPFParagraph;
import org.apache.poi.xwpf.usermodel.XWPFRun;
import org.apache.poi.util.Units;

import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;

public class ResizeImageInWord {
    public static void main(String[] args) throws IOException {
        // নতুন Word ডকুমেন্ট তৈরি
        XWPFDocument document = new XWPFDocument();

        // একটি প্যারাগ্রাফ তৈরি করা
        XWPFParagraph paragraph = document.createParagraph();

        // প্যারাগ্রাফে রান তৈরি করা
        XWPFRun run = paragraph.createRun();

        // ইমেজ যোগ করা এবং আকার কাস্টমাইজ করা
        String imagePath = "path_to_your_image.jpg"; // ইমেজ ফাইলের পাথ
        try (FileInputStream fis = new FileInputStream(imagePath)) {
            run.addPicture(fis, XWPFDocument.PICTURE_TYPE_JPEG, imagePath, Units.toEMU(150), Units.toEMU(150)); // ইমেজ আকার ১৫০x১৫০ পিক্সেল
        }

        // Word ডকুমেন্ট সেভ করা
        try (FileOutputStream out = new FileOutputStream("resized_word_with_image.docx")) {
            document.write(out);
        }

        System.out.println("আকার পরিবর্তন সহ ইমেজ Word ডকুমেন্টে সফলভাবে যোগ করা হয়েছে!");
    }
}

কোড ব্যাখ্যা:

  • Units.toEMU(150): এটি ইমেজের সাইজ ১৫০ পিক্সেলে রূপান্তরিত করে EMU ইউনিটে।
  • ইমেজের আকার ১৫০x১৫০ পিক্সেলে সেট করা হয়েছে।

এই কোডটি চালানোর পর, ইমেজটি কাস্টম আকারে Word ডকুমেন্টে যোগ করা হবে।


3. ইমেজের সাইজ স্বয়ংক্রিয়ভাবে ফিট করা

আপনি যদি ইমেজের সাইজটি স্বয়ংক্রিয়ভাবে ফিট করতে চান, তবে আপনাকে আকার নির্ধারণের পরিবর্তে aspect ratio মেনে চলতে হবে। যদিও POI লাইব্রেরি সাইজ স্বয়ংক্রিয়ভাবে কাস্টমাইজ করার জন্য সরাসরি কোনো পদ্ধতি প্রদান করে না, আপনি ইমেজের আসল আকার বের করে প্রোগ্রামেটিকভাবে সেটি সঠিক সাইজে কনভার্ট করতে পারেন।


সারাংশ

Apache POI ব্যবহার করে Word ডকুমেন্টে ইমেজ যোগ করা অত্যন্ত সহজ। আপনি JPEG বা PNG ফরম্যাটের ইমেজ ফাইল ইনপুট স্ট্রিম দিয়ে Word ডকুমেন্টে যোগ করতে পারেন। addPicture() মেথডটি ইমেজের আকার কাস্টমাইজ করার সুযোগ দেয় এবং Units.toEMU() পদ্ধতি ব্যবহার করে আপনি সাইজ নিয়ন্ত্রণ করতে পারেন। এইভাবে আপনি ইমেজ এবং টেক্সটের সাথে একটি পেশাদারী Word ডকুমেন্ট তৈরি করতে পারেন।


common.content_added_by

ইমেজের আকার এবং অবস্থান নির্ধারণ করা

120
120

Apache POI ব্যবহার করে Microsoft Word ডকুমেন্টে ইমেজ (ছবি) যোগ করা এবং তার আকার (size) ও অবস্থান (position) নিয়ন্ত্রণ করা যেতে পারে। এর মাধ্যমে আপনি ডকুমেন্টে ইমেজের আকার কাস্টমাইজ করতে পারেন এবং ইমেজটি ডকুমেন্টের নির্দিষ্ট স্থানে রাখতে পারেন।

এই প্রক্রিয়ায়, XWPFRun এবং XWPFPicture এর মাধ্যমে ইমেজটি ডকুমেন্টে যোগ করা হয় এবং ইমেজের আকার এবং অবস্থান নিয়ন্ত্রণ করা হয়।


ইমেজ যোগ করা এবং আকার নির্ধারণ করা

Apache POI এর মাধ্যমে আপনি Word ডকুমেন্টে ছবি যোগ করতে পারেন এবং ছবি নির্দিষ্ট আকারে কনফিগার করতে পারেন। নিচে দেখানো হলো কিভাবে ইমেজের আকার এবং অবস্থান নিয়ন্ত্রণ করা যায়।

উদাহরণ: ইমেজের আকার এবং অবস্থান নির্ধারণ করা

import org.apache.poi.xwpf.usermodel.XWPFDocument;
import org.apache.poi.xwpf.usermodel.XWPFParagraph;
import org.apache.poi.xwpf.usermodel.XWPFRun;
import org.apache.poi.util.Units;

import java.io.FileOutputStream;
import java.io.FileInputStream;
import java.io.IOException;

public class ImageSizeAndPositionExample {
    public static void main(String[] args) throws IOException {
        // নতুন ডকুমেন্ট তৈরি করা
        XWPFDocument document = new XWPFDocument();

        // প্যারাগ্রাফ তৈরি করা
        XWPFParagraph paragraph = document.createParagraph();

        // রান (Run) তৈরি করা, যার মাধ্যমে ইমেজ যোগ হবে
        XWPFRun run = paragraph.createRun();

        // ইমেজ যোগ করার জন্য ইনপুট স্ট্রিম তৈরি করা
        try (FileInputStream imageStream = new FileInputStream("image.jpg")) {
            // ইমেজটি ডকুমেন্টে যোগ করা
            run.addPicture(imageStream, XWPFDocument.PICTURE_TYPE_JPEG, "image.jpg",
                    Units.toEMU(200), Units.toEMU(100)); // ইমেজের আকার নির্ধারণ (প্রস্থ 200pt, উচ্চতা 100pt)
        }

        // ডকুমেন্ট সংরক্ষণ
        try (FileOutputStream out = new FileOutputStream("ImageSizeAndPositionExample.docx")) {
            document.write(out);
        }

        System.out.println("ইমেজ সফলভাবে আকার এবং অবস্থান সহ যোগ করা হয়েছে!");
    }
}

কোড ব্যাখ্যা:

  • run.addPicture() ব্যবহার করে ডকুমেন্টে ছবি যোগ করা হয়েছে।
  • Units.toEMU() ব্যবহার করে ইমেজের আকার নির্ধারণ করা হয়েছে। এখানে, 200px প্রস্থ এবং 100px উচ্চতা দেওয়া হয়েছে। POI ইমেজের আকার EMU (English Metric Units) এ নির্ধারণ করে, তাই আমাদের পিক্সেল বা পয়েন্টকে EMU তে রূপান্তর করতে হয়।
  • আপনি ছবির আকার পরিবর্তন করতে চাইলে Units.toEMU(প্রস্থ) এবং Units.toEMU(উচ্চতা) মান পরিবর্তন করতে পারেন।

ইমেজের অবস্থান নির্ধারণ করা

ইমেজের অবস্থান নিয়ন্ত্রণ করতে আপনি XWPFPicture এবং XWPFRun ব্যবহার করে ইমেজের alignment এবং positioning কাস্টমাইজ করতে পারেন। সাধারণত, ইমেজের alignment (যেমন, বাম, ডান, সেন্টার) নিয়ন্ত্রণ করা হয় এবং প্রিন্টিং পেজের মধ্যে ইমেজের সঠিক স্থানে তা বসানো হয়।

উদাহরণ: ইমেজের Alignment নির্ধারণ করা

import org.apache.poi.xwpf.usermodel.XWPFDocument;
import org.apache.poi.xwpf.usermodel.XWPFParagraph;
import org.apache.poi.xwpf.usermodel.XWPFRun;
import org.apache.poi.xwpf.usermodel.ParagraphAlignment;
import org.apache.poi.util.Units;

import java.io.FileOutputStream;
import java.io.FileInputStream;
import java.io.IOException;

public class ImageAlignmentExample {
    public static void main(String[] args) throws IOException {
        // নতুন ডকুমেন্ট তৈরি করা
        XWPFDocument document = new XWPFDocument();

        // প্যারাগ্রাফ তৈরি করা
        XWPFParagraph paragraph = document.createParagraph();

        // প্যারাগ্রাফের alignment নির্ধারণ করা (সেন্টার আলাইন)
        paragraph.setAlignment(ParagraphAlignment.CENTER);

        // রান (Run) তৈরি করা
        XWPFRun run = paragraph.createRun();

        // ইমেজ যোগ করার জন্য ইনপুট স্ট্রিম তৈরি করা
        try (FileInputStream imageStream = new FileInputStream("image.jpg")) {
            // ইমেজটি ডকুমেন্টে যোগ করা
            run.addPicture(imageStream, XWPFDocument.PICTURE_TYPE_JPEG, "image.jpg",
                    Units.toEMU(200), Units.toEMU(100)); // আকার নির্ধারণ করা (200pt প্রস্থ, 100pt উচ্চতা)
        }

        // ডকুমেন্ট সংরক্ষণ
        try (FileOutputStream out = new FileOutputStream("ImageAlignmentExample.docx")) {
            document.write(out);
        }

        System.out.println("ইমেজ সফলভাবে সেন্টারে অবস্থান সহ যোগ করা হয়েছে!");
    }
}

কোড ব্যাখ্যা:

  • paragraph.setAlignment(ParagraphAlignment.CENTER) দিয়ে আমরা প্যারাগ্রাফের alignment সেন্টারে সেট করেছি, যাতে ইমেজটি সেন্টার অবস্থানে থাকবে।
  • আপনি ParagraphAlignment.LEFT বা ParagraphAlignment.RIGHT ব্যবহার করে ইমেজের অবস্থান বাম বা ডানেও রাখতে পারেন।

ইমেজের অবস্থান আরো কাস্টমাইজ করা

আপনি যদি আরও নির্দিষ্ট অবস্থানে ইমেজ রাখতে চান, তাহলে XWPFPicture এর মাধ্যমে ইমেজটির anchor বা position কাস্টমাইজ করতে পারবেন।

উদাহরণ: ইমেজের অবস্থান কাস্টমাইজ করা

import org.apache.poi.xwpf.usermodel.XWPFDocument;
import org.apache.poi.xwpf.usermodel.XWPFParagraph;
import org.apache.poi.xwpf.usermodel.XWPFRun;
import org.apache.poi.util.Units;

import java.io.FileOutputStream;
import java.io.FileInputStream;
import java.io.IOException;

public class CustomImagePositionExample {
    public static void main(String[] args) throws IOException {
        XWPFDocument document = new XWPFDocument();

        // প্যারাগ্রাফ তৈরি করা
        XWPFParagraph paragraph = document.createParagraph();

        // রান (Run) তৈরি করা
        XWPFRun run = paragraph.createRun();

        // ইমেজ যোগ করার জন্য ইনপুট স্ট্রিম তৈরি করা
        try (FileInputStream imageStream = new FileInputStream("image.jpg")) {
            // ইমেজটির অবস্থান কাস্টমাইজ করা
            run.addPicture(imageStream, XWPFDocument.PICTURE_TYPE_JPEG, "image.jpg",
                    Units.toEMU(200), Units.toEMU(100)); // আকার নির্ধারণ করা (200pt প্রস্থ, 100pt উচ্চতা)
        }

        // ডকুমেন্ট সংরক্ষণ
        try (FileOutputStream out = new FileOutputStream("CustomImagePositionExample.docx")) {
            document.write(out);
        }

        System.out.println("ইমেজ কাস্টম অবস্থান সহ সফলভাবে যোগ করা হয়েছে!");
    }
}

এই কোডে আপনি XWPFRun এর মাধ্যমে ইমেজের আকার এবং অবস্থান নির্ধারণ করতে পারেন এবং addPicture মেথডের মাধ্যমে ইমেজের বিভিন্ন প্যারামিটার কাস্টমাইজ করতে পারেন।


সারাংশ

Apache POI ব্যবহার করে Word ডকুমেন্টে ইমেজ যোগ করা এবং তার আকারঅবস্থান নিয়ন্ত্রণ করা খুবই সহজ। আপনি XWPFRun এবং XWPFPicture এর মাধ্যমে ইমেজটি যোগ করতে পারেন এবং তার আকার নির্ধারণ করতে Units.toEMU() ব্যবহার করতে পারেন। এছাড়াও, ইমেজের alignment কাস্টমাইজ করে আপনি তা সেন্টার, লেফট বা রাইটে অবস্থান করতে পারেন। addPicture() মেথডের মাধ্যমে ইমেজের আকার এবং অবস্থান সঠিকভাবে নিয়ন্ত্রণ করা সম্ভব।

common.content_added_by

Inline এবং Anchored Image ব্যবস্থাপনা

171
171

অ্যাপাচি পিওআই (Apache POI) ব্যবহার করে Word ডকুমেন্টে ইমেজ যোগ করা সম্ভব। ইমেজ দুটি মূলভাবে Inline Image এবং Anchored Image হিসেবে যোগ করা যেতে পারে। Inline Image হল এমন একটি ইমেজ যা টেক্সটের সঙ্গে সরাসরি যুক্ত থাকে এবং তার সাথে মুভ করে, যেখানে Anchored Image একটি স্থির ইমেজ যা ডকুমেন্টের নির্দিষ্ট স্থানে স্থাপন করা হয় এবং টেক্সটের মধ্য দিয়ে চলে না।

এখানে দুটি ধরনের ইমেজ ব্যবস্থাপনা করার জন্য উদাহরণ দেওয়া হলো।


Inline Image যোগ করা

Inline Image এমন একটি ইমেজ যা টেক্সটের সঙ্গে সরাসরি যুক্ত থাকে এবং তার অবস্থান টেক্সটের বর্তমান অবস্থানের সাথে পরিবর্তিত হয়। এটি সাধারণত টেক্সটের মধ্যে প্রবাহিত হয়ে থাকে।

কোড উদাহরণ:

import org.apache.poi.xwpf.usermodel.*;

import java.io.*;

public class AddInlineImage {
    public static void main(String[] args) throws Exception {
        // নতুন Word ডকুমেন্ট তৈরি করা
        XWPFDocument document = new XWPFDocument();

        // প্যারাগ্রাফ তৈরি করা
        XWPFParagraph paragraph = document.createParagraph();
        XWPFRun run = paragraph.createRun();

        // Inline Image যোগ করা
        FileInputStream imageStream = new FileInputStream("image.jpg");
        run.addPicture(imageStream, XWPFDocument.PICTURE_TYPE_JPEG, "image.jpg", Units.toEMU(100), Units.toEMU(100));

        // টেক্সট যোগ করা
        run.addBreak();
        run.setText("This is an inline image above the text.");

        // ডকুমেন্ট সেভ করা
        try (FileOutputStream out = new FileOutputStream("word_with_inline_image.docx")) {
            document.write(out);
        }

        System.out.println("Inline image successfully added!");
    }
}

কোডের ব্যাখ্যা:

  1. ইমেজ ইনপুট স্ট্রিম: FileInputStream দিয়ে ইমেজ ফাইলটি লোড করা হয়।
  2. addPicture() মেথড: run.addPicture() মেথডের মাধ্যমে Inline Image ডকুমেন্টে যুক্ত করা হয়। Units.toEMU(100) এর মাধ্যমে ইমেজের আকার নির্ধারণ করা হয় (যা 100 পিক্সেল).
  3. টেক্সট যোগ করা: ইমেজের পর টেক্সট যোগ করা হয়েছে।
  4. ফাইল সংরক্ষণ: word_with_inline_image.docx নামে ডকুমেন্টটি সেভ করা হয়।

Anchored Image যোগ করা

Anchored Image এমন একটি ইমেজ যা ডকুমেন্টের নির্দিষ্ট স্থানে এঙ্কর (anchor) করা হয়। এটি স্থির অবস্থানে থাকে এবং টেক্সটের মাঝে চলে না।

কোড উদাহরণ:

import org.apache.poi.xwpf.usermodel.*;

import java.io.*;

public class AddAnchoredImage {
    public static void main(String[] args) throws Exception {
        // নতুন Word ডকুমেন্ট তৈরি করা
        XWPFDocument document = new XWPFDocument();

        // প্যারাগ্রাফ তৈরি করা
        XWPFParagraph paragraph = document.createParagraph();
        XWPFRun run = paragraph.createRun();

        // Anchored Image যোগ করা
        FileInputStream imageStream = new FileInputStream("image.jpg");
        run.addPicture(imageStream, XWPFDocument.PICTURE_TYPE_JPEG, "image.jpg", Units.toEMU(100), Units.toEMU(100));

        // প্যারাগ্রাফে টেক্সট যোগ করা
        run.addBreak();
        run.setText("This image is anchored to the paragraph.");

        // Anchored position সেট করা (যেমন, নীচের দিকে বা পাশে স্থাপন)
        XWPFPictureData pictureData = document.getPackage().addPictureData(imageStream, XWPFDocument.PICTURE_TYPE_JPEG);
        document.createParagraph().createRun().addPicture(pictureData, XWPFDocument.PICTURE_TYPE_JPEG, "image.jpg", Units.toEMU(100), Units.toEMU(100));

        // ডকুমেন্ট সেভ করা
        try (FileOutputStream out = new FileOutputStream("word_with_anchored_image.docx")) {
            document.write(out);
        }

        System.out.println("Anchored image successfully added!");
    }
}

কোডের ব্যাখ্যা:

  1. ইমেজ ইনপুট স্ট্রিম: FileInputStream দিয়ে ইমেজ ফাইলটি লোড করা হয়।
  2. addPicture() মেথড: run.addPicture() এর মাধ্যমে Anchored Image ডকুমেন্টে যুক্ত করা হয়।
  3. Anchored position: ইমেজের অবস্থান টেক্সটের বাইরে নির্দিষ্ট স্থানে স্থাপন করা হয়।
  4. ফাইল সংরক্ষণ: ডকুমেন্টটি word_with_anchored_image.docx নামে সেভ করা হয়।

Inline এবং Anchored Image এর মধ্যে পার্থক্য

  • Inline Image: টেক্সটের সঙ্গে যুক্ত থাকে এবং তার অবস্থান টেক্সটের সঙ্গে পরিবর্তিত হয়। এটি সাধারণত টেক্সটের মধ্যে প্রবাহিত হয়।
  • Anchored Image: একটি নির্দিষ্ট স্থানে স্থাপন করা হয় এবং টেক্সটের মধ্যে চলে না। এটি টেক্সটের পাশে বা নিচে বা নির্দিষ্ট স্থানে ফিক্সড থাকে।

সারাংশ

Apache POI এর XWPF API ব্যবহার করে আপনি Word ডকুমেন্টে Inline Image এবং Anchored Image যোগ করতে পারেন। Inline Image টেক্সটের মধ্যে প্রবাহিত হয়, যেখানে Anchored Image একটি স্থির অবস্থানে থাকে এবং টেক্সটের মধ্যে চলে না। এই দুটি ইমেজ ব্যবস্থাপনার মাধ্যমে আপনি আপনার ডকুমেন্টের চিত্র ব্যবহার আরও সৃজনশীলভাবে করতে পারেন।

common.content_added_by

Multiple Image Handling Techniques

202
202

Apache POI লাইব্রেরি ব্যবহার করে Microsoft Word ডকুমেন্টে একাধিক ইমেজ যোগ করা বা পরিচালনা করা সহজ। এটি বিভিন্ন ইমেজ ফরম্যাট সমর্থন করে এবং XWPFRun এবং addPicture() পদ্ধতি ব্যবহার করে একাধিক ইমেজ সন্নিবেশ করা যায়। যখন একাধিক ইমেজ যোগ করতে হয়, তখন XWPFParagraph এবং XWPFRun এর মধ্যে একটি যথাযথ ভারসাম্য প্রয়োজন, যাতে ইমেজগুলিকে সঠিকভাবে ডকুমেন্টে স্থান দেওয়া যায়।

একাধিক ইমেজ যোগ করার পদক্ষেপ

  1. ডকুমেন্ট তৈরি করা: প্রথমে একটি .docx ফাইল তৈরি বা লোড করতে হবে।
  2. প্যারাগ্রাফ তৈরি করা: একাধিক ইমেজের জন্য বিভিন্ন প্যারাগ্রাফ তৈরি করতে হবে।
  3. ইমেজ যোগ করা: একাধিক ইমেজের জন্য addPicture() পদ্ধতি ব্যবহার করা হয়।
  4. ইমেজের সাইজ এবং অবস্থান নির্ধারণ করা: প্রতিটি ইমেজের জন্য সাইজ এবং অবস্থান কাস্টমাইজ করা যায়।

উদাহরণ ১: একাধিক ইমেজ যোগ করা (Sequentially)

এখানে একাধিক ইমেজের জন্য একটি সাধারণ উদাহরণ দেওয়া হল, যেখানে একের পর এক ইমেজ ডকুমেন্টে যোগ করা হচ্ছে:

import org.apache.poi.xwpf.usermodel.XWPFDocument;
import org.apache.poi.xwpf.usermodel.XWPFParagraph;
import org.apache.poi.xwpf.usermodel.XWPFRun;
import org.apache.poi.util.Units;
import java.io.*;

public class MultipleImagesExample {
    public static void main(String[] args) {
        try {
            // নতুন ডকুমেন্ট তৈরি
            XWPFDocument document = new XWPFDocument();

            // প্রথম প্যারাগ্রাফ তৈরি
            XWPFParagraph paragraph1 = document.createParagraph();
            XWPFRun run1 = paragraph1.createRun();

            // প্রথম ইমেজ যোগ করা
            String imagePath1 = "path_to_image1.png";  // প্রথম ইমেজের পাথ
            FileInputStream imageStream1 = new FileInputStream(imagePath1);
            run1.addPicture(imageStream1, XWPFDocument.PICTURE_TYPE_PNG, imagePath1, Units.toEMU(200), Units.toEMU(200));

            // দ্বিতীয় প্যারাগ্রাফ তৈরি
            XWPFParagraph paragraph2 = document.createParagraph();
            XWPFRun run2 = paragraph2.createRun();

            // দ্বিতীয় ইমেজ যোগ করা
            String imagePath2 = "path_to_image2.jpg";  // দ্বিতীয় ইমেজের পাথ
            FileInputStream imageStream2 = new FileInputStream(imagePath2);
            run2.addPicture(imageStream2, XWPFDocument.PICTURE_TYPE_JPEG, imagePath2, Units.toEMU(200), Units.toEMU(200));

            // তৃতীয় প্যারাগ্রাফ তৈরি
            XWPFParagraph paragraph3 = document.createParagraph();
            XWPFRun run3 = paragraph3.createRun();

            // তৃতীয় ইমেজ যোগ করা
            String imagePath3 = "path_to_image3.gif";  // তৃতীয় ইমেজের পাথ
            FileInputStream imageStream3 = new FileInputStream(imagePath3);
            run3.addPicture(imageStream3, XWPFDocument.PICTURE_TYPE_GIF, imagePath3, Units.toEMU(200), Units.toEMU(200));

            // ডকুমেন্ট সেভ করা
            try (FileOutputStream fos = new FileOutputStream("MultipleImagesExample.docx")) {
                document.write(fos);
            }

            System.out.println("একাধিক ইমেজ সফলভাবে ডকুমেন্টে যোগ করা হয়েছে!");

        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}

কোডের ব্যাখ্যা

  1. XWPFDocument: একটি নতুন Word ডকুমেন্ট তৈরি করা হচ্ছে।
  2. XWPFParagraph: প্রতিটি ইমেজের জন্য আলাদা প্যারাগ্রাফ তৈরি করা হচ্ছে, যাতে প্রতিটি ইমেজ তার নিজস্ব প্যারাগ্রাফে যোগ হতে পারে।
  3. XWPFRun: প্রতিটি প্যারাগ্রাফে একটি run তৈরি হচ্ছে, যা ইমেজের ফরম্যাট এবং সাইজ নিয়ন্ত্রণ করে।
  4. addPicture(): এই পদ্ধতিটি প্রতিটি ইমেজ ফাইল সন্নিবেশ করতে ব্যবহার করা হচ্ছে। ইমেজের সাইজ কাস্টমাইজ করার জন্য Units.toEMU(200) ব্যবহার করা হয়েছে, যা EMU (English Metric Units) এ সাইজ নির্ধারণ করে।

উদাহরণ ২: একাধিক ইমেজ একটি প্যারাগ্রাফে যোগ করা

যদি একাধিক ইমেজ একই প্যারাগ্রাফে যোগ করতে চান, তাহলে আপনাকে একই XWPFParagraph এবং XWPFRun ব্যবহার করতে হবে। উদাহরণ হিসেবে, একটি প্যারাগ্রাফে একাধিক ইমেজ যোগ করা হল:

import org.apache.poi.xwpf.usermodel.XWPFDocument;
import org.apache.poi.xwpf.usermodel.XWPFParagraph;
import org.apache.poi.xwpf.usermodel.XWPFRun;
import org.apache.poi.util.Units;
import java.io.*;

public class MultipleImagesInOneParagraphExample {
    public static void main(String[] args) {
        try {
            // নতুন ডকুমেন্ট তৈরি
            XWPFDocument document = new XWPFDocument();

            // এক প্যারাগ্রাফ তৈরি
            XWPFParagraph paragraph = document.createParagraph();
            XWPFRun run = paragraph.createRun();

            // প্রথম ইমেজ যোগ করা
            String imagePath1 = "path_to_image1.png";
            FileInputStream imageStream1 = new FileInputStream(imagePath1);
            run.addPicture(imageStream1, XWPFDocument.PICTURE_TYPE_PNG, imagePath1, Units.toEMU(100), Units.toEMU(100));

            // দ্বিতীয় ইমেজ যোগ করা
            String imagePath2 = "path_to_image2.jpg";
            FileInputStream imageStream2 = new FileInputStream(imagePath2);
            run.addPicture(imageStream2, XWPFDocument.PICTURE_TYPE_JPEG, imagePath2, Units.toEMU(100), Units.toEMU(100));

            // তৃতীয় ইমেজ যোগ করা
            String imagePath3 = "path_to_image3.gif";
            FileInputStream imageStream3 = new FileInputStream(imagePath3);
            run.addPicture(imageStream3, XWPFDocument.PICTURE_TYPE_GIF, imagePath3, Units.toEMU(100), Units.toEMU(100));

            // ডকুমেন্ট সেভ করা
            try (FileOutputStream fos = new FileOutputStream("MultipleImagesInOneParagraph.docx")) {
                document.write(fos);
            }

            System.out.println("একাধিক ইমেজ একটি প্যারাগ্রাফে সফলভাবে যোগ করা হয়েছে!");

        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}

কোডের ব্যাখ্যা

  1. একই প্যারাগ্রাফে একাধিক ইমেজ: এখানে আমরা একটি XWPFParagraph এবং একটি XWPFRun ব্যবহার করেছি, যাতে একাধিক ইমেজ একই প্যারাগ্রাফে যোগ করা যায়।
  2. addPicture(): প্রতিটি ইমেজ আলাদাভাবে run এ যোগ করা হচ্ছে।

ইমেজের অবস্থান কাস্টমাইজ করা

  1. Alignment: আপনি ইমেজের অবস্থান কাস্টমাইজ করতে পারেন, যেমন left, center, বা right:

    paragraph.setAlignment(ParagraphAlignment.CENTER);
    
  2. Spacing: ইমেজের মধ্যে স্থান নির্ধারণ করতে setSpacingBefore() বা setSpacingAfter() ব্যবহার করতে পারেন।

Apache POI লাইব্রেরি ব্যবহার করে Microsoft Word ডকুমেন্টে একাধিক ইমেজ যোগ করা বেশ সহজ এবং নমনীয়। আপনি বিভিন্ন প্যারাগ্রাফে একাধিক ইমেজ যোগ করতে পারেন, অথবা একই প্যারাগ্রাফে একাধিক ইমেজ সন্নিবেশ করতে পারেন। প্রতিটি ইমেজের সাইজ, অবস্থান এবং ফরম্যাট কাস্টমাইজ করা যায়, যা ডকুমেন্টের চেহারা এবং ডিজাইনকে আরও আকর্ষণীয় করে তোলে।

common.content_added_by
টপ রেটেড অ্যাপ

স্যাট অ্যাকাডেমী অ্যাপ

আমাদের অল-ইন-ওয়ান মোবাইল অ্যাপের মাধ্যমে সীমাহীন শেখার সুযোগ উপভোগ করুন।

ভিডিও
লাইভ ক্লাস
এক্সাম
ডাউনলোড করুন
Promotion